// 导入 http 模块
import http from 'wechat-http'
/**
 * 配置接口基础路径
 */
http.baseURL = 'https://live-api.itheima.net'

/* 请求拦截器 */
http.intercept.request = (params) => {
  //会在每一次发送请求的时候 触发
  // console.log('请求拦截器触发啦');
  // console.log(params);
  const app = getApp()
  if (app.token) {
    //有token的时候  把它带过去
    //params={url}
    params.header = {
      //把原来的header数据  放在这里
      Authorization: `Bearer ${app.token}`,
      ...params.header,
    }
  }
  // 这里必须要有返回
  return params
}

/**
 * 配置响应拦截器
 */
http.intercept.response = async (res) => {
  //判断是不是token过期
  if (res.statusCode === 401) {
    //refreshToken过期
    if (res.config.url.includes('/refreshToken')) {
      const currentPage = getCurrentPages()
      console.log(36, currentPage);
      const lastPage = currentPage[currentPage.length - 1]
      console.log(38, lastPage);
      const backPage = lastPage.route
      console.log(40, backPage);
      //跳转登录页
      return wx.redirectTo({
        url: '/pages/login/index?redirector=' + backPage
      })
    }
    //重新发送请求  获取新的token
    const app = getApp()
    //使用refreshToken更新token
    const result = await http({
      url: '/refreshToken',
      method: 'POST',
      header: {
        //这里要注意使用refresh_token
        Authorization: 'Bearer ' + app.refreshToken
      }
    })
    console.log('------')
    const { token, refreshToken } = result.data
    // 更新token
    app.setToken(token, refreshToken)
    console.log('-----')
    // 重新再一次之前的请求。。。。
    // 请求参数
    // console.log(res)

    return await http({
      ...res.config,
      header: {
        // 这时要注意使用的是 refresh_token
        Authorization: 'Bearer ' + token,
      },
    })
  }

  // 过滤接口返回的数据
  return res.data
}
/**
 * 挂载方法到全局
 */
wx.http = http
/**
 * 模块导出
 */
export default http